<?php
namespace Shopadmin\Model;
use Think\Model;
// 生成用户签到日历信息
class CalendarModel {
	protected $_table;//table表格 
	protected $_currentDate;//当前日期 
	protected $_days; //给定的月份应有的天数 
	protected $_dayofweek;//给定月份的 1号 是星期几 
	
	protected $_year; //年 
	protected $_month; //月 
	public $curdate;//当前日期
	public $signday;//已签到的日期 数组
	public $width;//日历宽度
	public $height;//日历高度
	/** 
* 构造函数 
*/ 
	public function _cons() 
	{ 
		$this->_table=""; 
		$this->_year = isset($this->curdate)?date("Y",strtotime($this->curdate)):(isset($this->_year)?$this->_year:date("Y")); 
		$this->_month = isset($this->curdate)?date("m",strtotime($this->curdate)):(isset($this->_month)?$this->_month:date("m")); 
		if ($this->_month>12){//处理出现月份大于12的情况 
			$this->_month=1; 
			$this->_year++; 
		} 
		if ($this->_month<1){//处理出现月份小于1的情况 
			$this->_month=12; 
			$this->_year--; 
		} 
		$this->_currentDate = $this->_year.'年'.$this->_month.'月份';//当前得到的日期信息 
		$this->_days = date("t",mktime(0,0,0,$this->_month,1,$this->_year));//得到给定的月份应有的天数 
		$this->_dayofweek = date("w",mktime(0,0,0,$this->_month,1,$this->_year));//得到给定的月份的 1号 是星期几 
	} 
	/** 
* 输出标题和表头信息 
*/ 
	protected function _showTitle() 
	{ 
		$this->_table="<table class=\"sign\" style=\"width:".$this->width.";height:".$this->height.";text-align:center;color:#969;line-height:24px;margin:0 auto;\"><thead><tr align='center'><th colspan='7'>".$this->_currentDate."</th></tr></thead>"; 
		$this->_table.="<tbody><tr>"; 
		$this->_table .="<td>一</td>"; 
		$this->_table .="<td>二</td>"; 
		$this->_table .="<td>三</td>"; 
		$this->_table .="<td>四</td>"; 
		$this->_table .="<td>五</td>"; 
		$this->_table .="<td>六</td>"; 
		$this->_table .="<td>日</td>"; 
		$this->_table.="</tr>"; 
	} 
	/** 
* 输出日期信息 
* 根据当前日期输出日期信息 
*/ 
	protected function _showDate() 
	{ 
		$nums=$this->_dayofweek==0?7:$this->_dayofweek; 
		for ($i=2;$i<=$nums;$i++){//输出1号之前的空白日期 
			$this->_table.="<td> &nbsp; </td>"; 
		} 
		for ($i=1;$i<=$this->_days;$i++){//输出天数信息 
			$class="";
			foreach($this->signday as $day){ 
				if(date("j",strtotime($day["date"]))==$i ){
					switch($day["signType"]){
						case 1 : $class = "on"; break;
						case 4 : $class = "on_bu"; break;
						case 5 : $class = "on_la"; break;
						case 6 : $class = "readysign"; break;
					}
					switch($day["giftDay"]){
						case 1 : $class .= " giftok "; $str=" data-gid=".$day["giftId"]; break;
						case 2 : $class .= " gift ";  $str=" data-gid=".$day["giftId"]; break;
					}
					break;
				}
			}
			$class = "class=\"".$class."\"";
			if ($nums%7==0){//换行处理：7个一行 
				$this->_table.="<td $class $str>$i</td></tr><tr>"; 
			}else{ 
				$this->_table.="<td $class $str>$i</td>"; 
			} 
			$nums++; 
		} 
		if($nums%7==0){
			$this->_table.="<td> &nbsp; </td>"; 
		}else{
			for ($i=0;$i<=(7-$nums%7);$i++){//输出1号之前的空白日期 
				$this->_table.="<td> &nbsp; </td>"; 
			} 
		}
		$this->_table.="</tbody></table>"; 
		// $this->_table.="<h3><a href='?y=".($this->_year)."&m=".($this->_month-1)."'>上一月</a>   "; 
		// $this->_table.="<a href='?y=".($this->_year)."&m=".($this->_month+1)."'>下一月</a></h3>"; 
	} 
	/** 
* 输出日历 
*/ 
	public function showCalendar() 
	{ 
		$this->_cons();
		$this->_showTitle(); 
		$this->_showDate(); 
		return $this->_table; 
	} 
}